// 定义 vuex

import Vue from 'vue'

import Vuex from 'vuex'

import user from './modules/user'
import setting from './modules/setting'

Vue.use(Vuex)

// 创建仓库 store
const store = new Vuex.Store({

  modules:{
    user,
    setting
  },

  // 开启严格模式
  // 不要反向修改, 用mutations解决
  strict:true, // console.error() 
  // state状态(数据) 类似vue中的data
  // 区别:data是自己的数据
  //state中的数据整个cue项目都能获取到
  state:{
      count: 666,
      title:'我是Vuex.state的大标题',
      list:[1,2,3,4,5,6,7,8,9]
  },
  // 定义mutations  必须是同步的
  mutations:{
    //逻辑  addCount
    addCount(state){
      state.count+=1
    },
    subCount(state , n){
      state.count-=n
    },
    changeTitle(state,newTitle){
      state.title = newTitle
    },
    changeCount(state,num){
      state.count = num
    }
  },

  // actions 数据异步操作
  // actions:{}   <---->   dispatch()
  actions:{
    setAsyncCount(context , num){
      // 停顿2s 去修改count

      setTimeout(()=>{
        context.commit('changeCount',num)
      },2000)
    }
  },

  // getter  
  getters:{
    // 函数 , 执行逻辑和返回数据 , 必须有return返回值
    // filterList: (state) => {
    //   return state.list.filter(item => item > 5)
    // }

    filterList: (state) => state.list.filter(item => item > 5)
  }
})


export default store
